package com.bjpowernode.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bjpowernode.entity.PmsAttr;
import com.bjpowernode.entity.PmsBrand;
import com.bjpowernode.entity.PmsCategory;
import com.bjpowernode.service.PmsAttrService;
import com.bjpowernode.service.PmsCategoryService;
import com.bjpowernode.vo.ResultJson;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 * 分类属性表 前端控制器
 * </p>
 *
 * @author zs
 * @since 2024-06-19
 */
@RestController
@RequestMapping("/pmsAttr")
public class PmsAttrController {
    @Resource
    PmsAttrService pmsAttrService;

    @Resource
    PmsCategoryService pmsCategoryService;

    //获取所有分类（带层级关系的【根据树行结构进行查询】），目的是为了用户进行选择对应分类来进行对应属性的获取
    @GetMapping("/getCategory")
    public ResultJson<List<PmsCategory>> getCategory() {
        return ResultJson.success(pmsCategoryService.getAll());
    }

    /*
      取得分类属性列表
      categoryIds 表示根据具体用户所选分类的id数组。来返回对应分类属性列表，所以不存在查询所有分类属性列表的需求
      String[] categoryIds 是数组类型，因为用户传过来的可能是多个分类id，所以用数组接收（例如服装id 和 服装id下男装id）
      返回的是属性列表
    */
    @GetMapping("/list")
    public ResultJson<List<PmsAttr>> list(String[] categoryIds) {
        //根据分类id查询对应属性列表
        return ResultJson.success(pmsAttrService.list(categoryIds));
    }

    //定义请求保存新增管理员方法，接收前端返回的参数，返回是否保存成功的结果
    @PostMapping("/save")
    public ResultJson<Boolean> save(String name, String categoryId, Integer type) {
        return ResultJson.success(pmsAttrService.save(name,categoryId,type),"添加属性成功");
    }

    //根据id指定查询管理员信息，目的是方便后面的修改操作
    @GetMapping("/getById")
    public ResultJson<PmsAttr> getById(String id) {
        return ResultJson.success(pmsAttrService.getById(id));
    }

    //定义请求保存修改管理员方法，接收前端返回的参数，返回是否保存成功的结果
    @PostMapping("/update")
    public ResultJson<Boolean> update(String id,String name, Integer type) {
        return ResultJson.success(pmsAttrService.update(id,name,type),"修改属性成功");
    }

    //删除操作（不进行直接删除，而是控制启用禁用状态）
    @PostMapping("/delete")
    public ResultJson<Boolean> delete(String id) {
        return ResultJson.success(pmsAttrService.delete(id),"删除属性成功");
    }
}
